home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d18 / vis082s.arc / MAINR2.PAS < prev    next >
Pascal/Delphi Source File  |  1991-04-17  |  7KB  |  274 lines

  1. {$R-,S-,I-,D-,F+,V-,B-,N-,L+ }
  2.  
  3. unit mainr2;
  4.  
  5. interface
  6.  
  7. uses Dos,crt,gensubs,gentypes,modem,subs1,subs2,statret,configrt,overret1,
  8.      textret,userret,mailret,lineedit,ansiedit,mainr1;
  9.  
  10. function reedit (var m:message; g:boolean):boolean;
  11. function editor (var m:message; sendto,gettitle:boolean; sent,bs:mstr):integer;
  12. procedure seekbdfile (n:integer);
  13. procedure writebdfile (var bd:boardrec);
  14. procedure writecurboard;
  15. (*procedure addnews;*)
  16. procedure sendmailto (uname:mstr; anon:boolean);
  17. procedure addfeedback (var m:mailrec);
  18. procedure hangupmodem;
  19. procedure setupmodem;
  20. procedure disconnect;
  21.  
  22. implementation
  23.  
  24. function reedit (var m:message; g:boolean):boolean;
  25. begin
  26.   if fseditor in urec.config
  27.     then reedit:=ansireedit (m,g)
  28.     else reedit:=linereedit (m,g);
  29.   trimmessage (m)
  30. end;
  31.  
  32. procedure seekbdfile (n:integer);
  33. begin
  34.   seek (bdfile,n);
  35.   seek (bifile,n); che
  36. end;
  37.  
  38. procedure writebdfile (var bd:boardrec);
  39. begin
  40.   write (bdfile,bd);
  41.   write (bifile,bd.shortname)
  42. end;
  43.  
  44. procedure writecurboard;
  45. begin
  46.   seekbdfile (curboardnum);
  47.   writebdfile (curboard); che
  48. end;
  49.  
  50. function uploadmsg:integer;
  51.   var f:text;
  52.       b:bulrec;
  53.       tu:mstr;
  54.       me:message;
  55.       sub,ls:lstr;
  56.       lne:integer;
  57.  
  58.   begin
  59.     uploadmsg:=-2;
  60.     If yes then Begin
  61.     If local then Begin
  62.       buflen:=80;
  63.       writestr ('Enter Name and Path to Text File:');
  64.       if length(input)<1 then exit;
  65.       assign (f,input);
  66.       reset (f);
  67.       if ioresult <> 0 then begin
  68.         writeln ('Cannot find Specified File!');
  69.         exit
  70.       end;
  71.     end else begin
  72.       writeln(^M^S'Ready to receive via Z-Modem Upload!');
  73.       assign(f,configset.forumdi+'Message.Xyz');
  74.       if exist(configset.forumdi+'Message.Xyz') then erase(f);
  75.       delay(500);
  76.       exec('DSZ.COM',' port '+strr(configset.useco)+' speed '+strlong(baudrate)+' rz '+configset.forumdi+'Message.Xyz');
  77.       if dosexitcode<>0 then begin
  78.         writeln(^G^G'Aborted!');
  79.         if exist(configset.forumdi+'Message.Xyz') then erase(f);
  80.         exit;
  81.       end;
  82.     end;
  83.     lne:=0;
  84.     reset(f);
  85.     while not eof(f) do begin
  86.       readln(f,ls);
  87.       inc(lne);
  88.       if lne>100 then begin
  89.         Writeln(^G^G^S'You may NOT have more then 100 lines in a message!');
  90.         textclose(f);
  91.         if not local then erase(f);
  92.         exit;
  93.       end;
  94.       me.text[lne]:=ls;
  95.     end;
  96.     me.anon:=false;
  97.     me.numlines:=lne;
  98.     me.note:=urec.usernote;
  99.     if me.numlines < 1 then begin
  100.       writeln (^R'Message not saved!');
  101.       exit;
  102.     end;
  103.     b.line:=maketext(me);
  104.     uploadmsg:=b.line;
  105.     b.anon:=false;
  106.     B.Where:=Configset.origin1;
  107.     B.Where2:=Configset.origin2;
  108.     B.Version:=NetMailVer;
  109.     B.Cnet:=False;
  110.     B.FidoNet:=False;
  111.     B.Flag3:=False;
  112.     B.Flag4:=False;
  113.     B.Flag5:=False;
  114.     B.Flag6:=False;
  115.     B.Flag7:=False;
  116.     B.Flag8:=False;
  117.     B.RealName:=Urec.RealName;
  118.     b.when:=now;
  119.     b.leftby:=unam;
  120.     b.status:='[ ha ]';
  121.     b.recieved:=false;
  122.     b.leftto:=tu;
  123.     b.line:=lne;
  124.     b.plevel:=ulvl;
  125. (*    addbul(b);
  126.     inc(newposts);
  127.     inc(gnup);
  128.     with curboard do if autodel<=numbuls then autodelete; *)
  129.     writeln(^M^S'Message has been saved');
  130.   end;
  131.  End;
  132.  
  133. function editor (var m:message; sendto,gettitle:boolean; sent,bs:mstr):integer;
  134. var post:boolean;
  135.  
  136.   function getthetitle:boolean;
  137.   begin
  138.     post:=true;
  139.     m.anon:=false;
  140.     getthetitle:=true;
  141.     If okfortitle then begin
  142.     buflen:=40;
  143.     writestr (^M^P'Title'^R':');
  144.       if length(input)=0 then begin
  145.         getthetitle:=false;
  146.         exit
  147.       end;
  148.       m.title:=input;
  149.       End;
  150.     okfortitle:=True;
  151.     if gettitle then begin
  152.       buflen:=30;
  153.      if sendto and (length(sent)=1) then begin
  154.         writestr(^M^M^P'Send to ['^R'CR/All'^P']:');
  155.         if length(input)=0 then m.sendto:='All'
  156.           else
  157.         m.sendto:=input;
  158.      end else m.sendto:='The SysOp''s';
  159.       if bs='EMAIL' then begin
  160.           m.title:='Announcement';
  161.           m.sendto:=urec.handle;
  162.           exit;
  163.       end;
  164.       if sent<>'0' then m.sendto:=sent;
  165.      if bs<>'0' then begin
  166.         m.title:=bs;
  167.         exit;
  168.      end;
  169.       if ulvl>=configset.anonymousleve then begin
  170.         buflen:=1;
  171.         writestr ('Anonymous? *');
  172.         m.anon:=yes
  173.       end;
  174.       writestr ('Upload a Prepared Message? *');
  175.       if yes then begin
  176.         editor:=uploadmsg;
  177.         post:=false;
  178.       end;
  179.     end;
  180.   end;
  181.  
  182. var b:boolean;
  183. begin
  184. { If useansiup then Begin }
  185.     editor:=-1;
  186.     m.numlines:=0;
  187.     m.note:=urec.usernote;
  188.     if not sendto then begin
  189.       m.sendto:='All';
  190.       m.title:='Message to next user';
  191.     end;
  192.     if match(bs,'EMAIL') then m.title:='Announcement';
  193.     b:=getthetitle;
  194.     if not post then exit;
  195.     if b then if
  196.      reedit(m,gettitle) then
  197.       editor:=maketext(m)
  198. { end;
  199.   useansiup:=false; }
  200. end;
  201.  
  202.  
  203. procedure sendmailto (uname:mstr; anon:boolean);
  204. var un:integer;
  205.     me:message;
  206.     line:integer;
  207.     u:userrec;
  208. begin
  209.   if length(uname)=0 then exit;
  210.   un:=lookupuser (uname);
  211.   if un=0 then writeln ('User not found.') else begin
  212.     if anon and (ulvl<configset.sysopleve) then uname:=configset.anonymousst;
  213.     seek (ufile,un);
  214.     read (ufile,u);
  215.     if u.emailannounce>-1 then begin
  216.       writehdr (u.handle+'''s Announcement');
  217.       printtext (u.emailannounce)
  218.     end;
  219.     writehdr ('Sending mail to '+uname);
  220.     line:=editor(me,false,true,uname,'0');
  221.     if line>=0 then addmail (un,line,me)
  222.   end
  223. end;
  224.  
  225. procedure addfeedback (var m:mailrec);
  226. var ffile:file of mailrec;
  227. begin
  228.   assign (ffile,configset.forumdi+'Feedback');
  229.   reset (ffile);
  230.   if ioresult<>0 then begin
  231.     close (ffile);
  232.     rewrite (ffile)
  233.   end;
  234.   seek (ffile,filesize(ffile));
  235.   write (ffile,m);
  236.   close (ffile);
  237.   newfeedback:=newfeedback+1;
  238. end;
  239.  
  240. procedure hangupmodem;
  241. var tries:integer;
  242. begin
  243.   tries:=0;
  244.     while carrier and (tries<5) do begin
  245.      delay(500);
  246.      hangup;
  247.     tries:=tries+1
  248.   end;
  249.   setparam (configset.useco,baudrate,parity)
  250. end;
  251.  
  252. procedure setupmodem;
  253. begin
  254.   write(direct,#27,'[0m');
  255.     if carrier then exit;
  256.   writeln (usr,^M^J'Setting up the modem...'^M^J^J);
  257.   sendmodemstr (configset.modemsetupst,true);
  258. end;
  259.  
  260. procedure disconnect;
  261. begin
  262.   if online then hangupmodem;
  263.   online:=true;
  264.   writelog (0,3,'');
  265.   if (unum>0) and not disconnected then updateuserstats (true);
  266.   disconnected:=true;
  267.     forcehangup:=true;
  268.   writestatus;
  269.   hangup
  270. end;
  271.  
  272. begin
  273. end.
  274.